libxl: Check a domain exists before destroying it
authorGianni Tedesco <gianni.tedesco@citrix.com>
Tue, 25 Jan 2011 17:02:47 +0000 (17:02 +0000)
committerGianni Tedesco <gianni.tedesco@citrix.com>
Tue, 25 Jan 2011 17:02:47 +0000 (17:02 +0000)
Signed-off-by: Gianni Tedesco <gianni.tedesco@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Committed-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl.c

index 018f2df286b4d84cfe5c46467cb19ee1f1273507..c4477c7c52fe837b9e0ff6491075146079f9a719 100644 (file)
@@ -662,10 +662,21 @@ int libxl_event_get_disk_eject_info(libxl_ctx *ctx, uint32_t domid, libxl_event
 int libxl_domain_destroy(libxl_ctx *ctx, uint32_t domid, int force)
 {
     libxl__gc gc = LIBXL_INIT_GC(ctx);
+    libxl_dominfo dominfo;
     char *dom_path;
     char *vm_path;
     int rc, dm_present;
 
+    rc = libxl_domain_info(ctx, &dominfo, domid);
+    switch(rc) {
+    case 0:
+        break;
+    case ERROR_INVAL:
+        LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "non-existant domain %d", domid);
+    default:
+        return rc;
+    }
+
     if (libxl__domain_is_hvm(ctx, domid)) {
         dm_present = 1;
     } else {